%config InlineBackend.rc = {"figure.dpi": 72, 'figure.figsize': (6.0, 4.0)}
%matplotlib inline

import ase
import matplotlib.pyplot as plt
import numpy as np
from IPython.display import HTML

import abtem

abtem.config.set({"local_diagnostics.progress_bar": True});

Animations#

XXX

Hide code cell source
probe = abtem.Probe(
    semiangle_cutoff=30,
    defocus=60,
    astigmatism=np.linspace(-70, 70, 50),
    astigmatism_angle=np.pi / 4,
    gpts=256,
    extent=10,
    energy=200e3,
)
probes = probe.build().complex_images().compute()
[########################################] | 100% Completed | 220.67 ms

XXX

visualization = probes.show(cmap="hsluv", display=False, cbar=True, vmin=0, vmax=8e-5)

visualization.adjust_figure_aspect()

visualization.set_panel_labels(
    labels="metadata", frameon=False, prop={"color": "w", "fontsize": 12}
)

animation = visualization.animate(adjust_scale=False, interval=100)

HTML(animation.to_jshtml())

Ensemble of probe thickness series#

XXX

Hide code cell source
probe = abtem.Probe(
    semiangle_cutoff=30,
    defocus=np.linspace(0, 100, 3),
    gpts=256,
    energy=200e3,
)

atoms_cell = ase.build.bulk("Si", cubic=True)

atoms = atoms_cell * (3, 3, 20)

potential = abtem.Potential(atoms, exit_planes=1)

images = probe.multislice(potential).intensity()

images.compute()
[########################################] | 100% Completed | 2.20 sms
<abtem.measurements.Images object at 0x0000017DF0A69930>

XXX

visualization = images.show(
    display=False,
    explode=(1,),
    # axes_types=None, #["index", "explode"],
    figsize=(12, 8),
    common_color_scale=True,
)

visualization.set_column_titles("")

visualization.adjust_figure_aspect()

visualization.set_panel_labels(
    labels="metadata", frameon=False, prop={"color": "w", "fontsize": 12}
)

animation = visualization.animate(adjust_scale=True, interval=60)

HTML(animation.to_jshtml())

Diffraction spots#

XXX

from abtem.tilt import precession_tilts

atoms_cell = ase.build.bulk("Si", cubic=True)

atoms = atoms_cell * (1, 1, 50)

potential = abtem.Potential(atoms, sampling=0.05, slice_thickness=2)

wave = abtem.PlaneWave(energy=100e3)

tilts = precession_tilts(10, 100)

wave.tilt = tilts

measurements = wave.multislice(potential).compute()

spots = measurements.diffraction_patterns().index_diffraction_spots(
    cell=atoms_cell.cell, threshold=1e-5
)
[########################################] | 100% Completed | 14.43 ss

XXX

from matplotlib.colors import ListedColormap

cmap = ListedColormap(["w"])

XXX

measurements.axes_metadata[0].label = "precession"
measurements.axes_metadata[0].values = [
    np.arctan2(tilt[1], tilt[0]) / np.pi * 180 + 180 for tilt in tilts
]
measurements.axes_metadata[0].units = "deg."

XXX

visualization = (
    spots.crop(50)
    .block_direct()
    .show(
        explode=False,
        scale=0.4,
        power=0.5,
        common_color_scale=True,
        figsize=(6, 6),
        vmax=0.08,
        display=False,
        cmap="viridis",
    )
)

visualization.adjust_figure_aspect()

visualization.set_panel_labels(
    labels="metadata", frameon=False, prop={"color": "w", "fontsize": 14}
)

for ax in np.array(visualization.axes).ravel():
    ax.set_facecolor("k")

animation = visualization.animate(adjust_scale=False, interval=20)

HTML(animation.to_jshtml())